package py.progweb.sgc.gui.client.dialog;

import java.util.ArrayList;
import java.util.List;

import py.progweb.sgc.gui.client.service.DialogModelService;
import py.progweb.sgc.gui.client.service.DialogModelServiceAsync;
import py.progweb.sgc.gui.client.widget.DescCampo;
import py.progweb.sgc.gui.client.widget.TablaFiltro;
import py.progweb.sgc.gui.client.widget.ToolbarPago;
import py.progweb.sgc.gui.shared.dialogmodel.DataRecord;
import py.progweb.sgc.gui.shared.dialogmodel.FacturasModel;

import com.google.gwt.core.client.GWT;
import com.google.gwt.user.client.Window;
import com.google.gwt.user.client.rpc.AsyncCallback;

public class ListadoFacturas extends ListadoBase {

	TablaFiltro tabla;
	DialogModelServiceAsync service;

	public ListadoFacturas() {
		super("Facturas Pendientes de Pago");

		setWidth(550);
		setHeight(400);

		service = (DialogModelServiceAsync) GWT
				.create(DialogModelService.class);

		ToolbarPago toolbar = new ToolbarPago(this);

		this.addItem(toolbar);

		cargarDatos();

	}

	@Override
	public void reset() {
		tabla.clearCriteria();
		cargarDatos();
	}

	@Override
	public void nuevo() {
		// TODO Auto-generated method stub

	}

	@Override
	public void modificar() {
		List<DataRecord> items = tabla.getFilasSeleccionadas();

		if (items.size() != 1) {
			Window.alert("Debe seleccionar una sola factura para cobrar");
			return;
		}

		FormularioPago form = (FormularioPago) DialogFactory.showDialog(this,
				DialogFactory.DGL_FORMULARIO_PAGOS);
		form.setData(items.get(0));

	}

	@Override
	public void eliminar() {
		// TODO Auto-generated method stub

	}

	public void cargarDatos() {
		service.getFacturasListadoModel(new AsyncCallback<FacturasModel>() {

			@Override
			public void onSuccess(FacturasModel result) {
				if (tabla != null)
					ListadoFacturas.this.removeItem(tabla);

				List<DataRecord> lista = result.getRecords();
				List<DataRecord> lista1 = new ArrayList<DataRecord>();
				
				for (DataRecord dr : lista) {
					if (dr.getAtributo("estado").toString().equals("pendiente")) {
						lista1.add(dr);
					}
					
				}

				tabla = new TablaFiltro(lista1, new DescCampo("codFacturaPk",
						"N&uacute;mero"),
						new DescCampo("venta.fecha", "Fecha"), new DescCampo(
								"venta.cliente.nombre", "Cliente"),
						new DescCampo("venta.codVentaPK", "Venta"),
						new DescCampo("saldo", "Saldo")
				// new DescCampo("estado","estado")
				);
				ListadoFacturas.this.addItem(tabla);
				tabla.setHeight(400);
			}

			@Override
			public void onFailure(Throwable caught) {
				manejarError(caught);
			}
		});
	}

}
